package com.niit.musicserver.service;

import com.niit.musicserver.entity.domain.Song;

import java.util.List;

/**
 * @Description:
 * @Author: cheng_jianzhen
 * @CreateTime： 2024/1/18 9:22
 */


public interface SongService {

    /**
     * @Description: 根据歌单id查询所有歌曲列表（没有分页）
     * @Author: cheng_jianzhen
     * @CreateTime: 2024/1/18 10:04
     * @param: songlistId
     * @return: com.niit.musicserver.common.Result
     **/
    List<Song> getListBySonglistId(Integer songlistId);



    /**
     * @Description: 添加新的歌曲到指定歌单中
     * @Author: cheng_jianzhen
     * @CreateTime: 2024/1/18 11:30
     * @param: songlistSong
     * @return: int
     **/
    int addSongToSonglist(Integer songlistId,Song song);


    /**
     * @Description: 删除指定歌单下的某个歌曲
     * @Author: cheng_jianzhen
     * @CreateTime: 2024/1/19 9:36
     * @param: songlistId
     * @param: songId
     * @return: int
     **/
    int deleteSongBySonglistIdSongId(Integer songlistId, Integer songId);


    /**
     * @Description: 查询所有歌曲
     * @Author: cheng_jianzhen
     * @CreateTime: 2024/1/19 13:25
     * @return: com.niit.musicserver.common.Result
     **/
    List<Song> getAllSongs();

    /**
     * @Description: 根据歌曲ID查询歌曲
     * @Author: cheng_jianzhen
     * @CreateTime: 2024/1/19 13:30
     * @param: songId
     * @return: com.niit.musicserver.common.Result
     **/
    Song getSongById(Integer songId);

    /**
     * @Description: 基于单表添加歌曲
     * @Author: cheng_jianzhen
     * @CreateTime: 2024/1/19 13:37
     * @param: song
     * @return: com.niit.musicserver.common.Result
     **/
    int addSong(Song song);


    /**
     * @Description: 基于单表更新歌曲信息
     * @Author: cheng_jianzhen
     * @CreateTime: 2024/1/19 13:37
     * @param: songId
     * @param: updatedSong
     * @return: com.niit.musicserver.common.Result
     **/
    int updateSong(Integer songId, Song updatedSong);


    /**
     * @Description: 更新歌曲信息根据歌曲ID删除歌曲
     * @Author: cheng_jianzhen
     * @CreateTime: 2024/1/19 14:35
     * @param: songId
     * @return: com.niit.musicserver.common.Result
     **/
    int deleteSongById(Integer songId);
}
